/*
 * @lc app=leetcode.cn id=860 lang=typescript
 *
 * [860] 柠檬水找零
 */

// @lc code=start

// 贪心算法。。。。
function lemonadeChange(bills: number[]): boolean {
    let cache = {
        5: 0,
        10: 0,
        20: 0,
    };
    for (let i = 0; i < bills.length; i++) {
        const element = bills[i];
        switch (element) {
            case 5:
                cache[5]++;
                break;
            case 10:
                if (cache[5] === 0) {
                    return false;
                }
                cache[10]++;
                cache[5]--;
                break;
            case 20:
                // 找 15 必然有 5
                if (cache[5] === 0) {
                    return false;
                }
                if (cache[10] === 0) {
                    // 没有 10，3张 5
                    if (cache[5] < 3) return false;
                    cache[5] -= 3;
                } else {
                    // 10+5
                    cache[5]--;
                    cache[10]--;
                }
                cache[20]++;
        }
    }
    return true;
}
// @lc code=end
